Word processing software has revolutionized the manner in which people generate documents and, in some cases has created whole industries such as the desktop publishing industry. However, when documents are created by more than one author, or are very large and complex, they often are revised many times before a final document is created. During the course of the document creation, when a new round of changes is being made, it is frequently desirable to maintain a complete copy or version of the document before the new revisions are made. The version copy may then be used as a comparison document with the current document to quickly locate the changes or may be used to reverse or "undo" the changes. Depending on the complexity of the document or the number of people involved in its creation, there may be multiple copies or versions of the document which must be stored.
Current word processing applications often lack the functionality necessary to efficiently organize and manage multiple document versions. In particular, it is increasingly desirable to include all version copies in a single master document, so that the copies can be stored, retrieved and distributed as a single entity. Although some word processing applications have provided facilities for maintaining multiple version copies, they generally do not allow a single file to include more than one version. Therefore, separate files need to be created for each version copy. The use of separate files has several disadvantages. First, a large amount of memory is consumed since the entire document must be stored and retrieved for each version. Secondly, the large amount of duplicate information, which must be manipulated due to the multiple versions, requires more processor time and therefore, slows the entire word processing system.
In order to overcome this latter difficulty, some systems only store copies for a predetermined number of the latest document versions or only load into memory the latest versions. However, with these latter systems, it is frequently not possible to keep a record of document changes since not all versions of the document are simultaneously available. In addition, in such system, since all changes are not available, some changes cannot be undone and redone.
Further, since separate copies of the versions must be maintained, there is an increased possibility of separating the copies and either losing some copies or failing to transmit the copies to editors or reviewers.
Accordingly, there is a need for a versioning tool which allows for the creation of a single master document containing all versions without duplicating the entire document for each version. More particularly, there is a need for word processing software which enables authors to create and revise documents and maintain copies of all previous revisions so that all changes can be undone and redone. There is a further need for a versioning tool which is compatible with an object-oriented word processing program.